取自维基百科:
在面向对象的计算机编程中,工厂是用于创建其他对象的对象.它是构造函数的抽象,可用于实现各种分配方案.
有人可以解释什么时候需要工厂级或有益吗?
我目前正在开发一个项目,我有一个类,并使用构造函数初始化一个对象(呃!),但它可能会失败,根本不会初始化.我有一个Success属性来检查它是否正确创建.这是一个应该实施工厂类的好例子吗?这样Create()方法可以返回null,我可以摆脱Success属性.我有正确的想法吗?
我知道预编译的头被用于加快编译,但有什么做的和不该做哪些文件,我应该包括在其中?例如,我有一个项目,该项目使用了很多boost库,因此我只是将boost标头文件包含在其中stdafx.h(我正在使用VS2008)。我是否也应该在其中包含每个标准头文件?例如,即使我包含<vector>但从不使用,这会增加我的可执行文件的大小std::vector吗?在stdafx.h中包含我自己项目的头文件是一个坏主意吗?
我无法理解的区别Array obj;和Array* obj = new Array;而超载数组索引运算符[].当我有一个指向该对象的指针时,我在VS 2010上收到这些错误消息.
错误C2679:二进制'=':没有找到一个类型'int'的右手操作数(或者没有可接受的转换)的
运算符可能是'Array&Array :: operator =(const Array&)',同时试图匹配参数列表'(Array,int)'
#include <iostream>
class Array
{
int arr[10] ;
public:
int& operator[]( int index )
{
return arr[index] ;
}
};
int main()
{
//Array* obj = new Array; Error
Array obj; // Correct
for( int i=0; i<10; ++i )
obj[i] = i;
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释运算符重载的两种实例之间的基本原理吗?谢谢.
如果你知道这个问题,
假设我有一个其CTOR接收整数的A类;
我做不到以下事情:
A* arr = new A[3](A(2), A(3), A(5));
Run Code Online (Sandbox Code Playgroud)
或者任何其他方式来初始化数组的几个成员.我四处看看,这是不可能的.
我的问题是为什么,我为什么要这样做
A arr[3] = {A(1), A(2), A(3)};
Run Code Online (Sandbox Code Playgroud)
但我不能做到以上?记忆方面或其他什么.
非常感谢你!
我对这段代码有些问题.我想显示... 12345 12345 12345
但我得到一个错误说...
错误1错误C3861:'displayOneRowOfDesign1':找不到标识符
有人可以帮忙吗?
// displays (on the screen) design1
void displayDesign1 ()
{
system ("cls"); // clears the screen
// the entire for loop displays all three rows
for (int r = 1; r <= 3; r++)
{ // One iteration of the body of this loop displays row number r.
// In other words, when r is 1, row 1 is displayed;
// when r is 2, row 2 is displayed; ...
displayOneRowOfDesign1 ();
} …Run Code Online (Sandbox Code Playgroud) 这是我的代码,我试过谷歌搜索它,但我可以找到为什么我的代码没有正确转换数字.但它符合要求.你能告诉我为什么它不起作用以及我该怎么做才能解决它.
#include <iostream>
using namespace std;
int main()
{
char a = 0;
char b = 0;
char c = 0;
char d = 0;
cout << "Enter 4 digit octal number ";
cin >> a >> b >> c >> d;
cout << "Decimal form of that number: " << (a * 512) + (b * 64) + (c * 8) + d << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有一个C#解决方案,让我们说MySolution,在这里我有2个项目,让我们说ProjectA和ProjectB.ProjectA用作参考ProjectB.
如何获取ProjectB类内部的版本ProjectA?
我可以使用以下语法获取ProjectB代码内部的版本ProjectB:
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version
基本上,我想在Console.ReadLine()中最多显示200个字符,以便在字符开始被抑制之前进行用户输入.我希望它像TextBox.MaxLength,除了控制台输入.我该怎么做?
我不想这样做 input.Substring(0, 200).
解决了:
我使用了自己的ReadLine函数,它是Console.ReadKey()的循环.
它看起来像这样,基本上:
StringBuilder sb = new StringBuilder();
bool loop = true;
while (loop)
{
ConsoleKeyInfo keyInfo = Console.ReadKey(true); // won't show up in console
switch (keyInfo.Key)
{
case ConsoleKey.Enter:
{
loop = false;
break;
}
default:
{
if (sb.Length < 200)
{
sb.Append(keyInfo.KeyChar);
Console.Write(keyInfo.KeyChar);
}
break;
}
}
}
return sb.ToString();
Run Code Online (Sandbox Code Playgroud)
感谢大家
BitConverter.IsLittleEndian的文档说:
指示数据存储在此计算机体系结构中的字节顺序("endianness").
"这个"令我困惑.说我有以下代码:
Console.WriteLine(BitConverter.IsLittleEndian);
Run Code Online (Sandbox Code Playgroud)
现在说我去我的小端机器上编译我的程序.如果我将可执行文件粘贴到大端机器上,它会说错吗?还是真的?基本上我想知道该字段是否是动态字段,以及JIT是否与它有关.
我有以下代码:
var hyphens = myString.Split('-');
topTitle = hyphens[0].Replace("_", " ");
subTitle = hyphens[1].Replace("_", " ");
Run Code Online (Sandbox Code Playgroud)
这是有效的,但如果myString没有两个带有连字符的单词,我会收到错误.如何使myString只包含一个单词,那么topTitle获取该单词并且subTitle获得"n/a"?