提问人:Fabio 提问时间:7/7/2022 最后编辑:user17732522Fabio 更新时间:7/7/2022 访问量:54
复制构造函数 在构造函数中调用的构造函数
copy constructor called in the constructor
问:
如果我有课程:
#include <cstddef>
#include "connection.h"
class Request{
private:
size_t sz;
char *data;
Connection *connection;
public:
Request(const char* d, size_t s, const Connection &c);
Request& operator=(const Request &other);
Request(const Request &rhs);
~Request();
void print();
void setElement(size_t, char);
};
#include <cstddef>
#ifndef CONNECTION_HPP
#define CONNECTION_HPP
class Connection {
private:
size_t *priority;
size_t *count;
public:
Connection(size_t p): priority(new size_t(p)), count(new size_t(1)) {};
Connection(const Connection&);
Connection& operator=(const Connection&);
~Connection();
size_t getPriority();
void setPriority(size_t); };
#endif
我提供了类请求的构造函数:
Request::Request(const char* d, size_t s, const Connection& c):
sz(s), data(new char[s]),connection(new Connection(c)) {
for (size_t i = 0; i<s; ++i)
data[i] = d[i]; }
当有时,我正在使用类连接的复制构造函数,但我不明白为什么。复制构造函数是由 还是 由 ?connection(new Connection(c))
new Connection(c)
connection(*)
答:
0赞
MSalters
7/7/2022
#1
new Connection(c)
获取现有 Connection ,复制它,并为您提供指向该副本的原始非托管指针。初始化指针仅设置指针,不涉及复制构造函数。c
Request::c
但是看看评论 - 这个类可能有太多的指针。如果是具有虚拟方法的基类,则可以考虑使用智能指针,例如 ,但可能应该是普通成员。Connection
std::unique_ptr<Connection>
Request::c
Connection
上一个:C++ 中类的复制构造函数
评论
new Connection(c)
new
priority
count
data
std::string
connection
Request
Connection
Connection