我正在研究C++,我无法理解下面粗体句子的含义:
来自IBM手册:
以下限制适用于构造函数和析构函数:
- 构造函数和析构函数没有返回类型,也不能返回值.
- 引用和指针不能用于构造函数和析构函数,因为它们的地址不能被使用.
- 无法使用关键字virtual声明构造函数.
- 构造函数和析构函数不能声明为static,const或volatile.
- 联合不能包含具有构造函数或析构函数的类对象.
你能给我举个例子吗?谢谢!
P S*_*ved 24
该句子意味着您不能将指针指向构造函数或析构函数.这是一个例子:
class Sample{
private: int x;
public: Sample() { x = 100; };
public: void* member() { x = 200; };
};
template <class X>
void call_me(Sample s, X function){
(s.*function)();
};
call_me(s, &Sample::member); //valid
call_me(s, &Sample::Sample); //invalid
call_me(s, &Sample::~Sample); //invalid
Run Code Online (Sandbox Code Playgroud)
理由是这样的:
s.member()).