指针练习改进
Pointers practice improvement
你好!我想了解更多关于指针的信息,所以我写了以下内容:
struct Data {
int day, month, year;
double hour;
};
class Movie {
protected:
string name;
Data data;
int requiredAge;
int freeSeats;
public:
Movie(){ }
Movie(string moviename, Data dat, int age, int seats) {
name = moviename;
data = dat;
requiredAge = age;
freeSeats = seats;
}
int getFreeSeats() { return freeSeats; }
~Movie(){ }
};
然后我将其初始化为main:
int _tmain(int argc, _TCHAR* argv[])
{
Data d; d.day = 12; d.hour = 16; d.month = 04; d.year = 2016;
Movie movie("Movie Name", d, 16, 35 );
system("pause");
return 1;
}
为什么我应该在这里使用指针,而在哪里使用指针
在这里使用指针唯一有意义的地方是将结构传递给构造函数:
Movie(string moviename, Data* dat, int age, int seats) {
name = moviename;
data = *dat;
requiredAge = age;
freeSeats = seats;
}
这将避免在调用构造函数时创建结构的完整副本。只是传球要便宜一点。
而在C中,这将是唯一的选择,在C++中有一个更好的方法:使用引用:
Movie( const string& moviename, const Data& dat, int age, int seats) {
name = moviename;
data = dat;
requiredAge = age;
freeSeats = seats;
}
顺便说一句,对于int
参数,通过引用传递它们是没有用的,因为它们不比指针大(以字节为单位)。
一个更好的版本将使用初始化列表:
Movie( const string& moviename, const Data& dat, int age, int seats)
: name(moviename), data(dat), requiredAge(age), freeSeats(seats) {}
(感谢您的提示,@NathanOliver)
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 加速C++练习2.4
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- C++ 独特指针练习的向量
- 练习中出现空指针错误
- 练习程序在尝试学习指针时崩溃
- 指针练习改进
- C++ 危险指针练习
- 跳到C++第13章练习问题4-指针
- 很好的资源,练习c++数组和指针
- 练习:C++中的指针和引用
- C++指针练习
- 需要帮助理解指针练习的输出