const和volatile被称为cv-qualifier由C规格.
specifier和qualifier(cv-qualifier)之间究竟有什么区别?限定符也是一个说明符吗?
是否必须qualifier只有左值?
什么是限定词以外的cv-qualifier?
我的上述理解是否有意义?
对于内置类型的整数数组说
int a[10];
int i = 2;
a[i] = 10;
Run Code Online (Sandbox Code Playgroud)
或者
i[a] = 10;
Run Code Online (Sandbox Code Playgroud)
因为
a[i]是一个后缀表达式,*(a+i)或者*(i+a)因为加法的可交换属性.
我希望为用户定义的类型实现这一点
class Dummy
{
//
};
Run Code Online (Sandbox Code Playgroud)
可能吗?如果是,那怎么样?如果没有那么为什么?
编辑: - 我知道它很难看,但代码编译后: - g ++ -dumpversion 4.3.3
#include <stdio.h>
#include<iostream>
#include <string.h>
#include <malloc.h>
using namespace std;
int main()
{
string ArrayS[10];
2[ArrayS] = "ADASD" ;
cout << 2[ArrayS] << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 根据C++标准: -
名称查找规则统一适用于所有名称(包括typedef-names(7.1.3),名称空间名称(7.3),概念名称(14.9),概念映射名称(14.9.2)和类名称( 9.1))语法允许在特定规则讨论的上下文中的这些名称.
名称查找规则适用于Overload解决方案发生之前?
我不明白背后必然有一些原因.
以下示例来自Book C++ in Nutshell: -
void func(int i)
{
std::cout << "int: " << i << '\n';
}
namespace N
{
void func(double d)
{
std::cout << "double: " << std::showpoint << d << '\n';
}
void call_func( )
{
// Even though func(int) is a better match, the compiler finds
// N::func(double) first.
func(3);
}
}
Run Code Online (Sandbox Code Playgroud) 参考: - "现代C++设计:应用的通用编程和设计模式"作者:Andrei Alexandrescu第6章实现单例.
即使你放入挥发性物质,也不能保证双重检查锁定模式安全和便携.为什么会这样?
如果有人能够提供任何一个很好的链接来解释什么是宽松的记忆模型以及什么是双重检查模式的确切问题.{或者有人可以解释}
我曾经认为volatile已经解决了这个问题,但在我读完这本书之前似乎不正确.
以下代码进行编译,而名称"aNumber"在使用前未声明.
class A
{
A()
:aNumber(100)
{
}
void foo()
{
aNumber = 0;
}
int aNumber;
};
Run Code Online (Sandbox Code Playgroud)
如果以上代码编译,那么为什么不遵循: -
A.
class Dummy
{
void foo(INT);
typedef int INT;
};
Run Code Online (Sandbox Code Playgroud)
B.通过成员变量进行默认初始化: -
class Dummy
{
void foo(int y = x);
int x;
};
Run Code Online (Sandbox Code Playgroud) virtual和inline是函数说明符.
它们只能在功能之前出现.{根据我的理解}.
那么,在下面的代码中什么是虚拟的?
class Base
{
//
};
class Derived :virtual public Base
{
};
Run Code Online (Sandbox Code Playgroud) CREATE TABLE DIALOGUE_TABLE(EXPIRE_TIME TIMESTAMP);
Run Code Online (Sandbox Code Playgroud)
以下代码片段位于存储过程中:
PO_EXPIRETIME :- OUT PARAM of procedure a varchar2
SELECT TO_CHAR(SYS_EXTRACT_UTC(EXPIRE_TIME))
INTO PO_EXPIRETIME
FROM DIALOGUE_TABLE;
Run Code Online (Sandbox Code Playgroud)
当我从服务器运行Stored Proc时EXEC,打印PO_EXPIRETIME时间戳与UTC格式正确.
但是,当我从OCCI和客户端调用存储过程时,收到的时间戳不相同,但这是表中未实现UTC格式化的实际时间戳.
也许我想念的东西,但我不知道的是什么?我需要在客户端做些什么吗?