小编Nay*_*iya的帖子

复制构造函数不调用

当我在这里阅读有关复制初始化与直接初始化的内容时.复制构造函数应该在复制初始化时调用.为什么这里复制构造函数不调用?

#include <iostream>

using namespace std;

class A{};

class B{
public:
B(const A &a){cout << "B construct from A" << endl;}
B(const B &b){cout << "B copy constructor" << endl;}
};

int main(){
A a;
B b = a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ constructor

4
推荐指数
2
解决办法
248
查看次数

指针在通过referance时施放

看看我的代码,我可以将GoodMan指针转换为Man指针并AddMan使用两个步骤传入函数.但是,当我使用一步这样做时,它不起作用.相反,它需要Man 显式地转换为指针引用不仅Man指向指针.这背后的原因是什么?

    class Man{
    };

    class GoodMan: public Man
    {
    };

    void AddMan(Man*& man){};

    int main()
    {
        GoodMan* good_man = new GoodMan() ;

        //This works
        Man* pMan2 = (Man*)good_man;    
        AddMan(pMan2);

        //So I think this should work, But doesn't work
        AddMan((Man*)good_man);

        //But this works
        AddMan((Man*&)good_man);

        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

c++

4
推荐指数
1
解决办法
113
查看次数

__declspec(restrict)和__declspec(noalias)之间有什么不同

__declspec(restrict)和__declspec(noalias)之间有什么不同我已经阅读了这个页面https://msdn.microsoft.com/en-us/library/k649tyc7.aspx.但不清楚它是什么.有人能解释这两个注释解决了什么问题.

c++ visual-c++

4
推荐指数
1
解决办法
1186
查看次数

LISP 是编译型语言还是解释型语言?

我知道严格来说不存在编译或解释语言这样的东西。

但是,一般来说,LISP 是用来编写像 Python、bash 脚本、批处理脚本这样的脚本吗?

或者它是像 C++、JAVA 和 C# 这样的通用编程语言吗?

谁能用简单的术语解释一下?

lisp

4
推荐指数
1
解决办法
1万
查看次数

为什么使用int作为后增量运算符重载的参数?

我知道这是重载后增量运算符的方法:

const MyClass& MyClass::operator++(int);
Run Code Online (Sandbox Code Playgroud)

为什么它有int作为参数?

c++ operator-overloading

3
推荐指数
1
解决办法
3459
查看次数

覆盖函数的默认参数

可能重复:
虚函数默认参数行为

class Human{ virtual void print(int height =72){ cout << "Human: " << height << endl; }};
class Child:public Human{ void print(int height =48){ cout << "Child: " << height << endl; }};

int main()
{
 Human * brother = new Child();
 brother->print();
}
Run Code Online (Sandbox Code Playgroud)

结果就是这个

Child: 72
Run Code Online (Sandbox Code Playgroud)

为什么它从派生类中获取基类和函数定义的默认参数?期待与C++标准相关的解释.

c++ overloading

3
推荐指数
1
解决办法
1746
查看次数

“干净”在生成文件中不起作用

这是我的make文件。

 all: observer

    observer: main.o weather_center.o display.o subject.o observer.o
         g++ main.o weather_center.o display.o subject.o observer.o -o observer

    main.o: main.cpp
        g++ -c main.cpp

    weather_center.o: weather_center.cpp
        g++ -c weather_center.cpp

    display.o: display.cpp
        g++ -c display.cpp

    subject.o: subject.cpp
        g++ -c subject.cpp

    observer.o: observer.cpp
        g++ -c observer.cpp

    clean:
        rm -f  *o observer
Run Code Online (Sandbox Code Playgroud)

在这里,我正在尝试使用

clean:
        rm -f  *o observer
Run Code Online (Sandbox Code Playgroud)

清理临时 *.o 文件。但程序编译并生成目标程序集,但不会删除 *.o 文件。也没有显示任何错误。

  • rm -f *o observer在终端中尝试过。它工作正常。
  • 我已经用于Tab缩进
  • 没有文件以目录开头cleanrm在目录中。
  • 尝试$(RM)代替rm. 但不走运

c++ makefile

3
推荐指数
1
解决办法
2万
查看次数

在控制台中打印填充的方块

我需要使用我的C++程序(1cm x 1cm大小)在Linux终端中打印填充的正方形.我尝试使用ASCII 254(■),但在终端中它打印为垃圾字符.我不确定如何使用c ++打印扩展的ASCII字符.以下是我尝试打印扩展ASCII的两种方法.但没有成功.

第一种方法

for(int i=128; i< 255; i++ )
{
 std::cout << static_cast<char>(i) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

第二种方法

unsigned char temp = 'A'
for(int i=65; i< 255; i++ )
{
 std::cout << temp++ << std::endl;
 std::wcout << temp << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

任何建议或替代想法?

c++ linux ascii

3
推荐指数
2
解决办法
1万
查看次数

“为什么”python 数据类型是不可变的

为什么(不是如何)像 int 和 string 这样的 Python 原始数据类型是不可变的。那是因为脚本语言的实现限制。

作为例子

a = 5;
a = 6; 
Run Code Online (Sandbox Code Playgroud)

在第二行(a = 6;)而不是创建一个新的内存位置,为什么不能将第一个内存位置更改为 6

python memory

3
推荐指数
1
解决办法
722
查看次数

如何在批处理脚本中隐藏“net use”命令错误消息

我正在尝试y:使用这行批处理脚本删除映射到网络目录的驱动器。

net use y: /d /y>nul
Run Code Online (Sandbox Code Playgroud)

但在y:不存在或已删除的情况下。它给了我这个错误信息。

The network connection could not be found.
More help is available by typing NET HELPMSG 2250. 
Run Code Online (Sandbox Code Playgroud)

有没有办法避免打印此错误?我试过了,net use y: /d /y>nul>nul但没有运气

windows cmd batch-file

3
推荐指数
1
解决办法
5051
查看次数